#ifndef __HX_PRINTF_H__
#define __HX_PRINTF_H__

#include <stdint.h>
#include <stddef.h>
#include <stdarg.h>
#include <string.h>

#define blankLine           "====================================================================================="
#ifndef __file__
#define __file__            ((strlen(__FILE__)<=12)?(__FILE__):(((const char*)(__FILE__)) + strlen(__FILE__) -12))
#endif

#if (__ARMCC_VERSION>6000000)
#define hxPrintfFL(format,...)     hxPrintfVFL(__file__,(int)__LINE__,format,##__VA_ARGS__)
#elif defined(__CC_ARM)
#define hxPrintfFL(format,...)     hxPrintfVFL(__file__,(int)__LINE__,format,##__VA_ARGS__)
#elif defined(__GNUC__)
#define hxPrintfFL(format,...)     hxPrintfVFL(__file__,(int)__LINE__,format,##__VA_ARGS__)
#else
#define hxPrintfFL            hxPrintf
#endif
extern int hxPrintfVFL(const char*file,int line,const char*format,...);
extern int hxPrintf(const char*format,...);
extern int hxVSNPrintf(char*buffer,size_t count,const char*format,va_list va);
extern int hxSNPrintf(char*buffer,size_t count,const char*format,...);
extern int hxSPrintf(char*buffer,const char*format,...);

#if defined (_WIN32)||defined(__APPLE__)||defined(__linux__)

#include <stdio.h>

extern int hxFPrintf(FILE*fp,const char*format,...);
#endif
#endif
